/**
 * 用户地址模块服务文件
 */

const db = require('../db/userAddress');

/**
 * 添加
 * @param {*} ctx 
 */
const add = async ctx => {
    try {
        const { body } = ctx.request;
        await db.add(body);
        ctx.body = {
            code: 1,
            msg: '地址添加成功'
        }
    } catch (error) {
        ctx.app.emit('error', error);
        ctx.body = {
            code: 0,
            msg: '地址添加失败'
        }
    }
}

/**
 * 修改用户地址
 * @param {*} ctx 
 */
const update = async ctx => {
    try {
        const { body } = ctx.request;
        await db.update(body);
        ctx.body = {
            code: 1,
            msg: '地址修改成功'
        }
    } catch (error) {
        ctx.app.emit('error', error);
        ctx.body = {
            code: 0,
            msg: '地址修改失败'
        }
    }
}

/**
 * 删除地址
 * @param {*} ctx 
 */
const deleteAddress = async ctx => {
    try {
        const { id } = ctx.request.params;
        await db.deleteAddress(id);
        ctx.body = {
            code: 1,
            msg: '地址删除成功'
        }
    } catch (error) {
        ctx.app.emit('error', error);
        ctx.body = {
            code: 0,
            msg: '地址删除失败'
        }
    }
}

/**
 * 获取地址
 * @param {*} ctx 
 */
const getAll = async ctx => {
    try {
        const { id } = ctx.request.params;
        const data = await db.getAll(id);
        ctx.body = {
            code: 1,
            data
        }
    } catch (error) {
        ctx.app.emit('error', error);
        ctx.body = {
            code: 0,
            msg: '地址获取失败'
        }
    }
}

/**
 * 获取所有省市区
 * @param {*} ctx 
 */
const getPCD = async ctx => {
    try {
        const [province, city, area] = await db.getPCD();
        ctx.body = {
            code: 1,
            data: {
                province,
                city,
                area
            }
        }
    } catch (error) {
        ctx.app.emit('error', error);
        ctx.body = {
            code: 0,
            msg: '省市区获取失败'
        }
    }
}

module.exports = {
    add,
    update,
    getAll,
    getPCD,
    deleteAddress,
}